package com.xb.loan.util.qrtz.task;


import com.xb.loan.util.qrtz.TaskScheduleManager;
import com.xb.loan.util.qrtz.common.store.TaskEntiryStoreSupport;
import org.quartz.SchedulerException;

import java.util.Map;

/**
 * 
 * 任务接口
 * @author wuql
 */
public interface Task {
	
    /**
     * 
     * 任务运行入口
     */
	public void run();

	/**
	 * 
	 * 调度任务
	 * @param task  task对象
	 * @throws SchedulerException
	 */
	public void schedule(Task task) throws SchedulerException;
	/**
     * 
     * 调度任务
     * @throws SchedulerException
     */

	public void schedule(String taskId, Class<? extends Task> clazz, String cron, Map<String, Object> params);

	/**
	 * 获取spring对象
	 * @param beanId
	 * @return
	 */
	public <T> T getSpringBean(String beanId);

	/**
	 * 
	 * 获取任务执行类字节码
	 * @return
	 */
	public Class getProcessClass();
	
	/**
	 * 
	 * 获取任务实体持久化操作类
	 * @return
	 */
	public TaskEntiryStoreSupport getTaskStoreSupport();

	/**
	 * 
	 * 获取任务调度管理器
	 * @return
	 */
	public TaskScheduleManager getTaskScheduleManager();
	
	/**
	 * 
	 * 获取任务持久化Id
	 * @return
	 */
	public String getTaskEntityId();
}
